package com.cw.DesignModel23.Ceational.SingletonPattern.s4;

// 懒汉式(线程安全，同步方法)
public class Singleton {
    private static Singleton instance;

    private Singleton() {
    }

    //提供一个静态的公有方法，加入同步处理的代码，解决线程安全问题
    //即懒汉式
    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }

    /**
     * 添加synchronized关键字，这样子当一个线程在执行这个方法的时候，其他线程不能执行这个方法
     *
     * 【分析】
     *
     * 解决了线程不安全问题
     * 效率太低了，每个线程在想获得类的实例时候，执行getlnstance()方法都要进行同步。而其实这个方法只执行一次实例化代码就够了，后面的想获得该类实例，直接return就行了。方法进行同步效率太低
     * 结论：在实际开发中，不推荐使用这种方式
     * ————————————————
     * 版权声明：本文为CSDN博主「Hello Dam」的原创文章，遵循CC 4.0 BY-SA版权协议，转载请附上原文出处链接及本声明。
     * 原文链接：https://blog.csdn.net/laodanqiu/article/details/131670600
     */
}

